from collections import deque
# Реализуем стек с помощью класс deque изи библиотеки collections
# Долгова М. К.


class Stack:
    def __init__(self):
        self.stack = deque()

    def pop(self):
        """Метод удаляющий верхний элемент. Стек изменяется. Метод возвращает верхний элемент стека."""
        if len(self.stack) == 0:
            return None
        return self.stack.pop()

    def push(self, item):
        """Метод добавляющий элемент на вершину стека. Метод ничего не возвращает."""
        self.stack.append(item)

    def is_empty(self):
        """Метод проверки стека на пустоту. Должен возвращать True или False."""
        return len(self.stack) == 0

    def peek(self):
        """Метод возвращает верхний элемент стека, но не удаляет его. Стек не меняется."""
        if len(self.stack) == 0:
            return None
        return self.stack[-1]

def check_stack(text):
    stack = Stack()
    for char in text:
        if char in "({[":
            stack.push(char)
        elif char in ")}]":
            s = stack.pop()
            if (char == ")" and s == "(") or (char == "}" and s == "{") or (char == "]" and s == "["):
                continue
            else:
                return False
    return stack.is_empty()

    
print(check_stack('(((())))'))
